@@ -0,0 +1,19 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.28 on 2020-03-04 10:26  | 
            |
| 3 | 
                +from __future__ import unicode_literals  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +class Migration(migrations.Migration):  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                + dependencies = [  | 
            |
| 11 | 
                +        ('integral', '0013_saleclerksubmitloginfo_is_staff_delete'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AlterModelOptions(  | 
            |
| 16 | 
                + name='saleclerksubmitloginfo',  | 
            |
| 17 | 
                +            options={'verbose_name': '\u9500\u552e\u5458\u626b\u7801\u51fa\u5e93\u8bb0\u5f55', 'verbose_name_plural': '\u9500\u552e\u5458\u626b\u7801\u51fa\u5e93\u8bb0\u5f55'},
               | 
            |
| 18 | 
                + ),  | 
            |
| 19 | 
                + ]  | 
            
                @@ -8,7 +8,7 @@ from django_admin import AdvancedActionsModelAdmin, AdvancedExportExcelModelAdmi  | 
            ||
| 8 | 8 | 
                from django_models_ext import ProvinceShortModelMixin  | 
            
| 9 | 9 | 
                from pysnippets.strsnippets import strip  | 
            
| 10 | 10 | 
                 | 
            
| 11 | 
                -from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo,  | 
            |
| 11 | 
                +from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, CameraModelInfo, ConsumeInfoSubmitLogInfo, DistributorInfo,  | 
            |
| 12 | 12 | 
                LatestAppInfo, LatestAppScreenInfo, ModelInfo, ModelCameraBodyInfo, OperatorInfo, SaleclerkInfo)  | 
            
| 13 | 13 | 
                from utils.redis.rshot import update_member_shot_data  | 
            
| 14 | 14 | 
                 | 
            
                @@ -83,14 +83,60 @@ class ModelInfoAdmin(DeleteModelAdmin, admin.ModelAdmin):  | 
            ||
| 83 | 83 | 
                 | 
            
| 84 | 84 | 
                update_member_shot_data()  | 
            
| 85 | 85 | 
                 | 
            
| 86 | 
                + # 更新"型号机身适配"型号图片  | 
            |
| 87 | 
                + ModelCameraBodyInfo.objects.filter(  | 
            |
| 88 | 
                + brand_id=obj.brand_id,  | 
            |
| 89 | 
                + model_name=obj.model_name,  | 
            |
| 90 | 
                + ).update(  | 
            |
| 91 | 
                + model_image=obj.model_image,  | 
            |
| 92 | 
                + )  | 
            |
| 93 | 
                +  | 
            |
| 86 | 94 | 
                def delete_model(self, request, obj):  | 
            
| 87 | 95 | 
                obj.delete()  | 
            
| 88 | 96 | 
                update_member_shot_data()  | 
            
| 89 | 97 | 
                 | 
            
| 98 | 
                + # 更新"型号机身适配"型号图片  | 
            |
| 99 | 
                + ModelCameraBodyInfo.objects.filter(  | 
            |
| 100 | 
                + brand_id=obj.brand_id,  | 
            |
| 101 | 
                + model_name=obj.model_name,  | 
            |
| 102 | 
                + ).update(  | 
            |
| 103 | 
                + model_image=None,  | 
            |
| 104 | 
                + )  | 
            |
| 105 | 
                +  | 
            |
| 106 | 
                +  | 
            |
| 107 | 
                +class CameraModelInfoAdmin(admin.ModelAdmin):  | 
            |
| 108 | 
                +    list_display = ('brand_id', 'brand_name', 'camera_brand_name', 'camera_name', 'camera_image', 'status', 'created_at', 'updated_at')
               | 
            |
| 109 | 
                +    list_filter = ('brand_name', 'camera_brand_name', 'status')
               | 
            |
| 110 | 
                +  | 
            |
| 111 | 
                + def save_model(self, request, obj, form, change):  | 
            |
| 112 | 
                + obj.save()  | 
            |
| 113 | 
                +  | 
            |
| 114 | 
                + # 更新"型号机身适配"机身图片  | 
            |
| 115 | 
                + ModelCameraBodyInfo.objects.filter(  | 
            |
| 116 | 
                + brand_id=obj.brand_id,  | 
            |
| 117 | 
                + camera_brand_name=obj.camera_brand_name,  | 
            |
| 118 | 
                + camera_name=obj.camera_name,  | 
            |
| 119 | 
                + ).update(  | 
            |
| 120 | 
                + camera_image=obj.camera_image,  | 
            |
| 121 | 
                + )  | 
            |
| 122 | 
                +  | 
            |
| 123 | 
                + def delete_model(self, request, obj):  | 
            |
| 124 | 
                + obj.delete()  | 
            |
| 125 | 
                +  | 
            |
| 126 | 
                + # 更新"型号机身适配"机身图片  | 
            |
| 127 | 
                + ModelCameraBodyInfo.objects.filter(  | 
            |
| 128 | 
                + brand_id=obj.brand_id,  | 
            |
| 129 | 
                + camera_brand_name=obj.camera_brand_name,  | 
            |
| 130 | 
                + camera_name=obj.camera_name,  | 
            |
| 131 | 
                + ).update(  | 
            |
| 132 | 
                + camera_image=None,  | 
            |
| 133 | 
                + )  | 
            |
| 134 | 
                +  | 
            |
| 90 | 135 | 
                 | 
            
| 91 | 136 | 
                class ModelCameraBodyInfoAdmin(DeleteModelAdmin, admin.ModelAdmin):  | 
            
| 92 | 
                -    list_display = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'camera_name', 'status', 'created_at', 'updated_at')
               | 
            |
| 93 | 
                -    list_filter = ('brand_name', 'model_name', 'status')
               | 
            |
| 137 | 
                +    list_display = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'model_image', 'camera_brand_name', 'camera_name', 'camera_image', 'status', 'created_at', 'updated_at')
               | 
            |
| 138 | 
                +    list_filter = ('brand_name', 'model_name', 'camera_brand_name', 'status')
               | 
            |
| 139 | 
                +    readonly_fields = ('model_image', 'camera_image')
               | 
            |
| 94 | 140 | 
                     search_fields = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'camera_name')
               | 
            
| 95 | 141 | 
                 | 
            
| 96 | 142 | 
                 | 
            
                @@ -207,6 +253,7 @@ admin.site.register(AdministratorInfo, AdministratorInfoAdmin)  | 
            ||
| 207 | 253 | 
                admin.site.register(OperatorInfo, OperatorInfoAdmin)  | 
            
| 208 | 254 | 
                admin.site.register(BrandInfo, BrandInfoAdmin)  | 
            
| 209 | 255 | 
                admin.site.register(ModelInfo, ModelInfoAdmin)  | 
            
| 256 | 
                +admin.site.register(CameraModelInfo, CameraModelInfoAdmin)  | 
            |
| 210 | 257 | 
                admin.site.register(ModelCameraBodyInfo, ModelCameraBodyInfoAdmin)  | 
            
| 211 | 258 | 
                # admin.site.register(ModelImageInfo, ModelImageInfoAdmin)  | 
            
| 212 | 259 | 
                admin.site.register(DistributorInfo, DistributorInfoAdmin)  | 
            
                @@ -0,0 +1,26 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.28 on 2020-03-04 10:26  | 
            |
| 3 | 
                +from __future__ import unicode_literals  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +import django_models_ext.fileext  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +class Migration(migrations.Migration):  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                + dependencies = [  | 
            |
| 12 | 
                +        ('mch', '0044_modelcamerabodyinfo_camera_brand_name'),
               | 
            |
| 13 | 
                + ]  | 
            |
| 14 | 
                +  | 
            |
| 15 | 
                + operations = [  | 
            |
| 16 | 
                + migrations.AddField(  | 
            |
| 17 | 
                + model_name='modelcamerabodyinfo',  | 
            |
| 18 | 
                + name='camera_image',  | 
            |
| 19 | 
                + field=models.ImageField(blank=True, help_text='\u673a\u8eab\u56fe\u7247', null=True, upload_to=django_models_ext.fileext.upload_path, verbose_name='camera_image'),  | 
            |
| 20 | 
                + ),  | 
            |
| 21 | 
                + migrations.AddField(  | 
            |
| 22 | 
                + model_name='modelcamerabodyinfo',  | 
            |
| 23 | 
                + name='model_image',  | 
            |
| 24 | 
                + field=models.ImageField(blank=True, help_text='\u955c\u5934\u56fe\u7247', null=True, upload_to=django_models_ext.fileext.upload_path, verbose_name='model_image'),  | 
            |
| 25 | 
                + ),  | 
            |
| 26 | 
                + ]  | 
            
                @@ -0,0 +1,32 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.28 on 2020-03-04 10:35  | 
            |
| 3 | 
                +from __future__ import unicode_literals  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +import django_models_ext.fileext  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +class Migration(migrations.Migration):  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                + dependencies = [  | 
            |
| 12 | 
                +        ('mch', '0045_auto_20200304_1826'),
               | 
            |
| 13 | 
                + ]  | 
            |
| 14 | 
                +  | 
            |
| 15 | 
                + operations = [  | 
            |
| 16 | 
                + migrations.CreateModel(  | 
            |
| 17 | 
                + name='CameraModelInfo',  | 
            |
| 18 | 
                + fields=[  | 
            |
| 19 | 
                +                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
               | 
            |
| 20 | 
                +                ('status', models.BooleanField(db_index=True, default=True, help_text='Status', verbose_name='status')),
               | 
            |
| 21 | 
                +                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
               | 
            |
| 22 | 
                +                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
               | 
            |
| 23 | 
                +                ('camera_brand_name', models.CharField(blank=True, help_text='\u673a\u8eab\u54c1\u724c', max_length=255, null=True, verbose_name='camera_brand_name')),
               | 
            |
| 24 | 
                +                ('camera_name', models.CharField(blank=True, help_text='\u673a\u8eab\u540d\u79f0', max_length=255, null=True, verbose_name='camera_name')),
               | 
            |
| 25 | 
                +                ('camera_image', models.ImageField(blank=True, help_text='\u673a\u8eab\u56fe\u7247', null=True, upload_to=django_models_ext.fileext.upload_path, verbose_name='camera_image')),
               | 
            |
| 26 | 
                + ],  | 
            |
| 27 | 
                +            options={
               | 
            |
| 28 | 
                + 'verbose_name': '\u673a\u8eab\u4fe1\u606f',  | 
            |
| 29 | 
                + 'verbose_name_plural': '\u673a\u8eab\u4fe1\u606f',  | 
            |
| 30 | 
                + },  | 
            |
| 31 | 
                + ),  | 
            |
| 32 | 
                + ]  | 
            
                @@ -0,0 +1,25 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.28 on 2020-03-04 10:48  | 
            |
| 3 | 
                +from __future__ import unicode_literals  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +class Migration(migrations.Migration):  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                + dependencies = [  | 
            |
| 11 | 
                +        ('mch', '0046_cameramodelinfo'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AddField(  | 
            |
| 16 | 
                + model_name='cameramodelinfo',  | 
            |
| 17 | 
                + name='brand_id',  | 
            |
| 18 | 
                + field=models.CharField(blank=True, db_index=True, help_text='\u54c1\u724c\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='brand_id'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + migrations.AddField(  | 
            |
| 21 | 
                + model_name='cameramodelinfo',  | 
            |
| 22 | 
                + name='brand_name',  | 
            |
| 23 | 
                + field=models.CharField(blank=True, help_text='\u54c1\u724c\u540d\u79f0', max_length=255, null=True, verbose_name='brand_name'),  | 
            |
| 24 | 
                + ),  | 
            |
| 25 | 
                + ]  | 
            
                @@ -283,15 +283,33 @@ class ModelImageInfo(BaseModelMixin):  | 
            ||
| 283 | 283 | 
                }  | 
            
| 284 | 284 | 
                 | 
            
| 285 | 285 | 
                 | 
            
| 286 | 
                +class CameraModelInfo(BaseModelMixin):  | 
            |
| 287 | 
                + brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)  | 
            |
| 288 | 
                + brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称')  | 
            |
| 289 | 
                +  | 
            |
| 290 | 
                + camera_brand_name = models.CharField(_(u'camera_brand_name'), max_length=255, blank=True, null=True, help_text=u'机身品牌')  | 
            |
| 291 | 
                + camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称')  | 
            |
| 292 | 
                + camera_image = models.ImageField(_(u'camera_image'), upload_to=upload_path, blank=True, null=True, help_text=u'机身图片')  | 
            |
| 293 | 
                +  | 
            |
| 294 | 
                + class Meta:  | 
            |
| 295 | 
                + verbose_name = _(u'机身信息')  | 
            |
| 296 | 
                + verbose_name_plural = _(u'机身信息')  | 
            |
| 297 | 
                +  | 
            |
| 298 | 
                + def __unicode__(self):  | 
            |
| 299 | 
                + return unicode(self.pk)  | 
            |
| 300 | 
                +  | 
            |
| 301 | 
                +  | 
            |
| 286 | 302 | 
                class ModelCameraBodyInfo(BaseModelMixin):  | 
            
| 287 | 303 | 
                brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)  | 
            
| 288 | 304 | 
                brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称')  | 
            
| 289 | 305 | 
                 | 
            
| 290 | 306 | 
                model_name = models.CharField(_(u'model_name'), max_length=32, blank=True, null=True, help_text=u'型号名称')  | 
            
| 291 | 307 | 
                model_full_name = models.CharField(_(u'model_full_name'), max_length=255, blank=True, null=True, help_text=u'型号全名称')  | 
            
| 308 | 
                + model_image = models.ImageField(_(u'model_image'), upload_to=upload_path, blank=True, null=True, help_text=u'镜头图片')  | 
            |
| 292 | 309 | 
                 | 
            
| 293 | 
                - camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称')  | 
            |
| 294 | 310 | 
                camera_brand_name = models.CharField(_(u'camera_brand_name'), max_length=255, blank=True, null=True, help_text=u'机身品牌')  | 
            
| 311 | 
                + camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称')  | 
            |
| 312 | 
                + camera_image = models.ImageField(_(u'camera_image'), upload_to=upload_path, blank=True, null=True, help_text=u'机身图片')  | 
            |
| 295 | 313 | 
                 | 
            
| 296 | 314 | 
                class Meta:  | 
            
| 297 | 315 | 
                verbose_name = _(u'型号机身适配信息')  | 
            
                @@ -301,12 +319,22 @@ class ModelCameraBodyInfo(BaseModelMixin):  | 
            ||
| 301 | 319 | 
                return unicode(self.pk)  | 
            
| 302 | 320 | 
                 | 
            
| 303 | 321 | 
                @property  | 
            
| 322 | 
                + def model_url(self):  | 
            |
| 323 | 
                + return upload_file_url(self.model_image)  | 
            |
| 324 | 
                +  | 
            |
| 325 | 
                + @property  | 
            |
| 326 | 
                + def camera_url(self):  | 
            |
| 327 | 
                + return upload_file_url(self.camera_image)  | 
            |
| 328 | 
                +  | 
            |
| 329 | 
                + @property  | 
            |
| 304 | 330 | 
                def data(self):  | 
            
| 305 | 331 | 
                         return {
               | 
            
| 306 | 332 | 
                'model_name': self.model_name,  | 
            
| 307 | 333 | 
                'model_full_name': self.model_full_name,  | 
            
| 308 | 
                - 'camera_name': self.camera_name,  | 
            |
| 334 | 
                + 'model_url': self.model_url,  | 
            |
| 309 | 335 | 
                'camera_brand_name': self.camera_brand_name,  | 
            
| 336 | 
                + 'camera_name': self.camera_name,  | 
            |
| 337 | 
                + 'camera_url': self.camera_url,  | 
            |
| 310 | 338 | 
                }  | 
            
| 311 | 339 | 
                 | 
            
| 312 | 340 | 
                 |